<?php
namespace Pinenut\Service\UrlRule;

use Pinenut\Service\UrlRule;

class Direct extends UrlRule {

	/**
	 * Производим маршрутизацию, создаём по результатам запрос
	 * 
	 * @return \Pinenut\Request
	 */
	public function parseUrl($url = null, $method = null, $host = null, $params = null) {
		// print_r($params);exit;
		$tmp = explode('?', $url);
		$path = array_shift($tmp);
		// $params = array_shift($tmp);
		// бьём запрос
		$path = explode("/", ltrim($path, '/'));
		// если последним идёт / - подставляем index
		$lastPos = count($path) - 1;
		if (empty($path[$lastPos]))
			$path[$lastPos] = 'index';
			// собираем имя действия
		$path = implode('.', $path);
		
		$request = new \Request($path, $params, null, false); // array('')//'POST' == $_SERVER['REQUEST_METHOD']?$_POST:$_GET
		$request->isRoot(true);
		$request->isRenderLayout(true);
		return $request;
	}

	public function createUrl($action, array $params, $abs = false) {
		$url = "";
		$path = explode(".", $action);
		$lastPos = count($path) - 1;
		if ('index' == $path[$lastPos]) {
			unset($path[$lastPos]);
			$url = '/';
		}
		$url = '/' . ltrim(implode('/', $path) . $url, '/');
		
		if (count($params)) {
			$pieces = array();
			foreach ($params as $key => $value) {
				if (is_array($value)) {
					foreach ($value as $k => $v) {
						$pieces[] = $key . '[' . $k . ']=' . $v;
					}
				} else {
					$pieces[] = $key . '=' . $value;
				}
			}
			$url .= '?' . implode('&', $pieces);
		}
		
		return $url;
	}
}